The present invention relates generally to a network function optimization method, and more particularly, but not by way of limitation, to a system, method, and computer program product to optimize the deployment of cloud services which are composed of virtualized software network functions by exploiting locality of functions.
Conventionally, various network functions (e.g., firewalls, intrusion detections systems, proxy caches, tunnels, etc.) have been implemented in custom hardware. Their placement has typically been determined by functional requirements (e.g., an encrypting tunnel placed before packets traverse the public Internet, etc.), which include physical restrictions. As such, these devices have had little, if any, flexibility in where they are placed (e.g., positioned).
Recently, a move has occurred where these functions are implemented in software. This allows much greater flexibility in their placement. In particular, they can be deployed in virtual machines and containers, allowing much more dynamic behavior, such as more rapid deployment, performance scaling up/down and out/in with load, and live migration from one physical machine to another. This transformation creates the potential to innovate around optimizing the deployment of the software-based appliances that are used to create a service. Optimizing the performance of these software appliances allows achieving the same functionality, but with using fewer physical resources (e.g., CPU, network bandwidth, etc.) and reduced energy consumption.
Service placement in clouds has recently been considered, attempting to provision/orchestrate services in such a way as to minimize cross-interference, match commentary services (e.g., locate a CPU-bound service with an I/O bound service).
However, the recent techniques have not considered characteristics of the wide-area network (e.g., bandwidth, round trip time (RTT), packet loss rate, jitter, etc.), characteristics of the network function that are specific to networking (e.g., Quality of Service (QoS) requirements, RTT, bandwidth, loss rate), and network services (NS) policy versus global data center policy (i.e., DC policy).
There is a need in the art to optimize the deployment of cloud services which are composed of virtualized software network functions by exploiting locality of functions.